package sword.offer;

import java.util.*;

/**
 * 在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。 s 只包含小写字母。
 * @author 胡宇轩
 * @Email: yuxuan.hu01@bianlifeng.com
 */
public class Fifty {
    class Solution {
        HashMap<Character, Integer> hashMap = new HashMap<>();
        public char firstUniqChar(String s) {
            for (int i = 0; i < s.length(); i++) {
                if(hashMap.containsKey(s.charAt(i))){
                    hashMap.put(s.charAt(i), -1);
                }else{
                    hashMap.put(s.charAt(i), i);
                }
            }
            int first = s.length();
            for (Map.Entry<Character, Integer> entry: hashMap.entrySet()){
                if(entry.getValue() != -1 && entry.getValue() < first){
                    first = entry.getValue();
                }
            }
            return first == s.length() ? ' ' : s.charAt(first);
        }
    }
}
